Embodiments of the present invention generally relate to the creation of configuration files for software products. More particularly, embodiments relate to the automatic selection of configuration file version levels to ensure maximum backwards compatibility.
In various computing system industries, software product upgrades may be periodically released, wherein each release has a different version level. Typically, a given product release can introduce new functionality that may involve the use of new application programming interface (API) functions in order to implement the new functionality in the host environment of the software product. Computer programmers may use “tooling” to create configuration files which, when deployed into the host environment, provide for the API functions selected at the time of the creation/coding of the configuration files. While conventional configuration file tooling techniques may be suitable under certain circumstances, there remains considerable room for improvement.
For example, some tooling solutions may change with each release of the software product. A challenge with regard to such an approach is that if an attempt is made to deploy configuration files created for one version of a product into an environment with a lower (e.g., earlier) version of the product, an error could result due to the usage of API functions that are unknown to the lower version of the product.
Other tooling solutions may be able to create configuration files for different versions of a software product. In such a case, the programmer may be first required to explicitly set the version level of the runtime environment, which can in turn restrict the API functions that are available to the programmer. If, however, the selected version level is too low, certain desired API functions may not be available to the programmer. If, on the other hand, the selected version level is too high (e.g., recent), compatibility with earlier versions may be unnecessarily sacrificed while unneeded API functions are available but unused.